#pragma once

#ifndef SCRPC_COMMON_H
#define SCRPC_COMMON_H

#include <string>
#include <nlohmann/json.hpp>

namespace scRpc {

	struct RpcRequest
	{
		std::string method;			// 请求方法名
		nlohmann::json params;		// 请求参数，使用JSON格式存储
		int id;						// 请求唯一标识符，用于匹配请求和响应
		
		// 定义类型的序列化和反序列化操作，NLOHMANN_DEFINE_TYPE_INTRUSIVE用于JSON序列化
		NLOHMANN_DEFINE_TYPE_INTRUSIVE(RpcRequest, method, params, id)
	};
	
	struct RpcResponse
	{
		nlohmann::json ans;			// 响应 结果 --> JSON格式
		nlohmann::json error;		// 响应 错误 --> JSON格式
		int id;						// 响应对应的请求ID，用于匹配请求和响应
		
		// 定义类型的序列化和反序列化操作
		NLOHMANN_DEFINE_TYPE_INTRUSIVE(RpcResponse, ans, error, id)
	};

}

#endif	// SCRPC_COMMON_H